package dao.Paging;

public class PagingDAO 
{
	 public int w_size = 0;         //보여줄 글의 갯수 
	 public int p_size = 0;         //한블럭에 보여줄 페이지 수 
	 public int writing_Count = 0;  //검색의 총 count
	 public int cur_Page = 0;       //현재 페이지
	 
	 public String html = "";
	 
	 /**
	 * @param w_size		-	보여줄 글의 갯수
	 * @param p_size		-	한블럭에 보여줄 페이지 수 
	 * @param writing_Count	-	검색의 총 count
	 * @param cur_Page		-	현재 페이지
	 */
	public PagingDAO(int w_size, int p_size, int writing_Count, int cur_Page) 
	 {
	     super();
	     this.w_size = w_size;
	     this.p_size = p_size;
	     this.writing_Count = writing_Count;
	     this.cur_Page = cur_Page;
	     makePage();
	 }
	 public PagingDAO(int w_size, int p_size, int writing_Count,  int cur_Page, int lastFrame) 
	 {
		 super();
		 this.w_size = w_size;
		 this.p_size = p_size;
		 this.writing_Count = writing_Count;
		 this.cur_Page = cur_Page;
		 makePage2();
	 }
	 
	 public void makePage()
	 {
		 
		 if(isPre())
		     html += "<a href='javascript:goPage(1)'>처음</a>  <a href='javascript:goPage(" + (getPage_Start() - 1) + ")'>이전</a>";
		 for(int i = getPage_Start(); i <= getPage_End();i++)
		 {
			 if(cur_Page != i)
				 html += "<a href='javascript:goPage(" + i + ")'>"+i+"</a>";
			 else
				 html += "<span class='current'>" + i + "</span>";
		 }
		 if(isNext())
		 {
		     html += "<a href='javascript:goPage(" + (getPage_End() + 1) + ")'>다음</a>  <a href='javascript:goPage(" + getPage_Count() + ")'>마지막</a>";
		 }
	 }
	 
	 public void makePage2()
	 {
		 
		 if(isPre())
		     html += "<a href='javascript:goPage2(1)'>처음</a>  <a href='javascript:goPage2(" + (getPage_Start() - 1) + ")'>이전</a>";
		 for(int i = getPage_Start(); i <= getPage_End();i++)
		 {
			 if(cur_Page != i)
				 html += "<a href='javascript:goPage2(" + i + ")'>"+i+"</a>";
			 else
				 html += "<span class='current'>" + i + "</span>";
		 }
		 if(isNext())
		 {
		     html += "<a href='javascript:goPage2(" + (getPage_End() + 1) + ")'>다음</a>  <a href='javascript:goPage2(" + getPage_Count() + ")'>마지막</a>";
		 }
	 }
	 
	 //총 페이지 수 
	 public int getPage_Count()
	 {
		 return ( (writing_Count - 1) / w_size) + 1;
	 }
	 
	 //블럭의 시작페이지
	 public int getPage_Start()
	 {
		 return ( ( cur_Page - 1 ) / p_size ) * p_size + 1;
	 }
	 
	 //블럭의 마지막 페이지
	 public int getPage_End()
	 {
		 return Math.min( getPage_Start() + p_size - 1 , getPage_Count() );
	 }
	 
	 //Prev 존재 여부 현재 페이지가 1이 아니면 활성화
	 public boolean isPre()
	 {
		 return getPage_Start() != 1;
	 }
	 
	 //Next 존재 여부 
	 public boolean isNext()
	 {
	  return getPage_End() < getPage_Count();
	 }
	 
	 //DB 조회 시 시작 번호
	 public int getWriting_Start()   
	 {
		 return getWriting_End() - w_size + 1;
	 }
	 
	 //DB조회 시 마지막 번호
	 public int getWriting_End()
	 {
		 return cur_Page * w_size;
	 }

	public String getHtml() {
		return html;
	}

	public void setHtml(String html) {
		this.html = html;
	}
}
